package cn.stylefeng.guns.sys.modular.system.mapper;

import cn.stylefeng.guns.sys.modular.system.model.params.AreaParam;
import cn.stylefeng.guns.sys.modular.system.model.params.ProDataViewParam;
import cn.stylefeng.guns.sys.modular.system.model.result.*;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

public interface ProjectDataViewMapper {

    /**
     * 根据条件获取区域
     * @param param
     * @return
     */
    List<AreaResult> getAreasByParam(@Param("param")AreaParam param);

    /**
     * 门店状态
     * @param param
     * @return
     */
    List<DataResult> getDataOfShopStatus(@Param("param") ProDataViewParam param,@Param("lastYear")Integer lastYear);

    /**
     * 确认开业
     * @param param
     * @return
     */
    List<DataResult> getDataOfConfirmOpen(@Param("param")ProDataViewParam param);

    /**
     * 预计开业
     * @param param
     * @return
     */
    List<DataResult> getDataOfPlanOpen(@Param("param")ProDataViewParam param);

    /**
     * 各个国家门店总数
     * @return
     */
    List<ShopAreaDataResult> getValGroupByCountry();

    /**
     * 各个省门店总数
     * @return
     */
    List<ShopAreaDataResult> getValGroupByProvince();

    /**
     * 楼层分布
     * @return
     */
    List<DataResult> getFloorData();
    /**
     * 获取该省门店数量
     * @param param
     * @return
     */
    ProvinceDataResult getValByProvince(@Param("param")ProDataViewParam param);
    /**
     * 获取该省下各市的已开业数据（当天开业的也算在内）
     * @param param
     * @return
     */
    List<CityOpenData> getOpenDaraByProvince(@Param("param")ProDataViewParam param);

    /**
     * 获取所有门店数目
     * @return
     */
    int getShopNum();

    /**
     * 获取所有门店租期
     * @return
     */
    List<String> getZlTime();

    /**
     * 获取门店免租期
     * @return
     */
    List<String> getMzTime();

    /**
     * 获取宿舍租金数据
     * @return
     */
    List<String> getDormitoryRentData();

    /**
     * 门店租金数据
     * @param param
     * @return
     */
    List<Map<String, Object>> findShopRentData(@Param("param") ProDataViewParam param);

    List<Map<String, Object>> getShopRentDataByRangeKey(@Param("param")ProDataViewParam param);

    /**
     * 大米消耗-大米消耗数据(盘亏数)
     * @param param
     * @return
     */
    List<Map<String, Object>> getShopRiceConsumption(@Param("param")ProDataViewParam param);

    /**
     * 大米消耗-客流量
     * @param param
     * @return
     */
    List<Map<String, Object>> findPeopleQtyByParam(@Param("param") ProDataViewParam param);

    /**
     * 大米消耗-外卖主食数据
     * @param param2
     * @return
     */
    List<Map<String, Object>> findTakeAwayRiceDataByParam(@Param("param")ProDataViewParam param2);
}
